﻿namespace XmlParser
{
    public interface IXmlParser
    {
        #region

        /// <summary>
        /// An instance of a XmlObject representing the root element of the Xml file.
        /// You can walk through by using this Property.
        /// </summary>
        IXmlObject RootElement { get; }

        string RootElementName { get; }

        /// <summary>
        /// Loads an Exmle Document in a define Set of Classes. 
        /// You can walk through by using RootElement Property of the instance of this class.
        /// </summary>
        /// <param name="XmlFilePath">
        /// Full Path of the Xml File. 
        /// Only File Name if the file is placed on the root of Executable File.</param>
        /// <param name="RootNode">
        /// A string representing RootNode of Xml Document
        /// </param>
        void XmlLoad(string XmlFileName, string XmlString);

        void XmlParse(string AssemblyFullName);

        /// <summary>
        /// Save the Document to an Xml File represented by RootElement
        /// Hint1: You can change Xml Document by using RootElement Property of the instance of this class.
        /// Hint2: Changed Values will be saved in the XmlDocument.
        /// </summary>
        /// <param name="Path"></param>
        /// <param name="IsRelative"></param>
        /// <param name="FileName"></param>
        /// <returns></returns>
        string XmlSave(string path, bool IsRelative, string FileName);

        #endregion
    }
}
